要回覆使用者訊息的話,我們必須要從資料庫內找出使用者發過來的訊息,取得reply Token後再回覆給使用者.
MongoDB的Query查詢方式跟關連式資料庫相比是不同的,以下我們會透過實作查詢接口來帶大家完成.
資料結構長相
{
_id: ObjectId("642910bf2e7be725ecce6b3b"),
destination: <channel destination>,
events: [
{
type: 'message',
message: { _id: <message _id>, type: 'text', text: <user message> },
webhookEventId: <webhookEventId>,
deliveryContext: { isRedelivery: false },
timestamp: '1680412863529',
source: { type: 'user', userId: <userId> },
replyToken: <your replyToken>,
mode: 'active'
}
],
_class: 'com.example.lineMsgDemo.model.LineMsgBack'
}
查詢repository
public interface LineMessageRepository extends MongoRepository<LineMsgBack, String>{
@Query("{'events.source.userId' : ?0 } ")
public List<LineMsgBack> findByUserId(String userId);
}
可以發現它是用類似python的語法去映照查詢字串的
Controller
//根據使用者ID查詢
@GetMapping("/search/user/{userId}")
public List<LineMsgBack> searchByUserId(@PathVariable String userId) {
List<LineMsgBack> result = lineMessageRepository.findByUserId(userId);
return result;
}
這樣就完成使用者資料查詢接口了喔,很簡單吧
最後一篇我們會講要如何利用replyToken回覆使用者資訊
Line Message API + MongoDB 串接實作(四)發送訊息